 1.Impala的负载均衡
   
   Impala主要有三个组件，分别是statestore，catalog和impalad，对于Impalad节点，每一个节点都可
以接收客户端的查询请求，并且对于连接到该Impalad的查询还要作为Coordinator节点（需要消耗一
定的内存和CPU）存在，为了保证每一个节点的资源开销的平衡需要对于集群中的Impalad节点做一下
负载均衡.
   Cloudera官方推荐的代理方案:HAProxy
   DNS做负载均衡
   DNS做负载均衡方案是最简单的，但是性能一般，所以这里我们按照官方的建议使用HAProxy实现负载
均衡
   生产中应该选择一个非Impalad节点作为HAProxy的安装节点
   1).HAProxy方案
   安装haproxy
   yum install haproxy -y
   配置文件
   vim /etc/haproxy/haproxy.cfg
   具体配置内容
   defaults
mode http#mode { tcp|http|health }，tcp 表示4层，http表示7
层，health仅作为健康检查使用
log global
option httplog
option dontlognull
#option http-server-close
#option forwardfor except 127.0.0.0/8
#option abortonclose##连接数过大自动关闭
option redispatch#如果失效则强制转换其他服务器器
retries 3#尝试3次失败则从集群摘除
timeout http-request 10s
timeout queue 1m
#timeout connect 10s
#timeout client 1m
#timeout server 1m
timeout connect 1d#连接超时时间，重要，hive查询数据能返回结果的保证
timeout client 1d#同上
timeout server 1d#同上
timeout http-keep-alive 10s
timeout check 10s#健康检查时间
maxconn 3000#最⼤大连接数

listen impalashell
    bind 0.0.0.0:25003#ha作为proxy所绑定的IP和端⼝口
    mode tcp#以4层⽅方式代理理，重要
    option tcplog
    balance roundrobin#调度算法 'leastconn' 最少连接数分配，或者 'roundrobin'，轮询分
    server impalashell_1 linux121:21000 check
    server impalashell_2 linux122:21000 check
    server impalashell_3 linux123:21000 check

listen impalajdbc
    bind 0.0.0.0:25004#ha作为proxy所绑定的IP和端⼝口
    mode tcp#以4层方式代理，重要
    option tcplog
    balance roundrobin #调度算法 'leastconn' 最少连接数分配，或者 'roundrobin'，轮询分
    server impalajdbc_1 linux121:21050 check
    server impalajdbc_2 linux122:21050 check
    server impalajdbc_3 linux122:21050 check
    启动
	开启： service haproxy start
	关闭： service haproxy stop
    重启： service haproxy restart
    使用
	Impala-shell访问⽅方式
	impala-shell -i linux123:25003
	使⽤用起来十分方便，区别仅仅相当于是修改了了⼀一个ip地址和端口而已，其余不不变。
	jdbc:hive2://linux123:25004/default;auth=noSasl
	Impala集群在操作过程中尽量多给内存，如果内存不能满足使用要求，Impala的执行很可能会报错！！
 
 2.Impala优化
   
   cloudera官网上的Impala文档，原名为《Impala Performance Guidelines and Best Practices》。主
要介绍了为了提升impala性能应该考虑的⼀一些事情，结合实际考虑：
   基本优化策略
   1).文件格式
   对于大数据量来说，Parquet文件格式是最佳的
   2).避免小文件
   insert ... values 会产生大量小文件，避免使用
   3).合理分区粒度
   利用分区可以在查询的时候忽略掉无用数据，提高查询效率，通常建议分区数量在3万以下
(太多的分区也会造成元数据管理的性能下降)
   4).分区列数据类型最好是整数类型
   分区列可以使用string类型，因为分区列的值最后都是作为HDFS目录使用，如果分区列使用
整数类型可以降低内存消耗
   5)获取表的统计指标：在追求性能或者大数据量查询的时候，要先获取所需要的表的统计指标
  (如:执行compute stats )
   6).减少传输客户端数据量
   聚合(如 count、sum、max 等)
   过滤(如 WHERE )
   limit限制返回条数
   返回结果不要使用美化格式进行展示(在通过impala-shell展示结果时，添加这些可选参数: -
B、 --output_delimiter )
   7).在执行之前使用EXPLAIN来查看逻辑规划，分析执行逻辑
   8).Impala join自动的优化手段就是通过使⽤用COMPUTE STATS来收集参与Join的每张表的统计信
息，然后由Impala根据表的大小、列的唯一值数⽬目等来自动优化查询。为了更加精确地获取
每张表的统计信息，每次表的数据变更更时(如执行Insert,add partition,drop partition等)最好
都要执行一遍COMPUTE STATS获取到准确的表统计信息。